#!/usr/bin/env python
# -*- coding:utf-8 -*-

print u"正在连接服务器。。。请稍等..."
import imaplib
mail=imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('用户名@gmail.com','密码')

#print mail.list()  #列出目录
print("\n")
message= mail.select('INBOX')  #选择inbox收件箱
# print message  ###############显示 ok 3047
#fetching the lastest
result, data = mail.search(None, 'FROM', '"admin@eavx.com"')
ids=data[0]
id_list=ids.split()
latest_email_id=id_list[-1]
esult, data = mail.fetch(latest_email_id, "(RFC822)")
raw_email = data[0][1]   #整个邮件数据
import email
msg=email.message_from_string(raw_email) #String的邮件转换成email.message实例.
subject = msg.get("subject") #获取邮件主题
h = email.Header.Header(subject)
dh = email.Header.decode_header(h)
subject = dh[0][0]
###print "subject:", subject
###print "from: ", email.utils.parseaddr(msg.get("from"))[1] # 取from
###print "to: ", email.utils.parseaddr(msg.get("to"))[1] # 取to
#########################################
for par in msg.walk():
    if not par.is_multipart(): # 这里要判断是否是multipart，是的话，
                               #里面的数据是一个message 列表
        name = par.get_param("name") #如果是附件，这里就会取出附件的文件名
        if name:
            #有附件
            # 下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC.rar?=这样的文件名
            h = email.Header.Header(name)
            dh = email.Header.decode_header(h)
            fname = dh[0][0]
            print '附件名:', fname
            data = par.get_payload(decode=True) #　解码出附件数据，然后存储到文件中
 
            try:
                f = open(fname, 'wb') #注意一定要用wb来打开文件，因为附件一般都是二进制文件
            except:
                print '附件名有非法字符，自动换一个'
                f = open('aaaa', 'wb')
            f.write(data)
            f.close()
        else:
            #不是附件，是文本内容
            mail_data=par.get_payload(decode=True) # 解码出文本内容，直接输出来就可以了。
            #print mail_data
 
        print '+'*60 # 用来区别各个部分的输出
mail.close()

#######################匹配数据#####################################################################
import re
p=re.compile(r"\bdata\b-\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b-\b[\w]{32}\b-data")
data_list=p.findall(mail_data)
data_list=data_list[0].split("-")
print u"已找到回家路"
print u"最新ip:%s"% data_list[1]
print u"校验码：%s"%data_list[2]
print u"请任意键推出！"
raw_input()
    
            



